home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / games_d / gnuchess.zip / TODO < prev    next >
Text File  |  1990-06-29  |  6KB  |  160 lines

  1.  
  2.     GNU CHESS - THINGS TO DO
  3.  
  4. 5.The routine repetition() is still not correct since it considers
  5.   only where a piece is placed not the type of the piece.
  6.  
  7. 6.A tournament program to play chess between two different chess
  8.   programs. This could be done by extending xchess so it could play
  9.   two chess programs against each other. If such a beast exsisted we
  10.   could play different versions of gnuchess against each other. And
  11.   calculate ratings for different machines. A nodes/sec - rating table
  12.   would be very nice to have. Also we could test different evaluation
  13.   heuristics against each other.
  14.  
  15. 7.A chess database to store historical games.
  16.  
  17. 10.gnuchess does not handle stalemate correctly(is this still true?)
  18.  
  19. 13.Convert the type of all time variables to time_t.
  20.  
  21. 18.Check gnuchess compliance with GNU Coding Standards.
  22.  
  23. 19.Readability of the code can be increased by using these suggested
  24.    types where apropriate instead of just plain short.
  25.  
  26. typedef enum
  27. {
  28.   white, black, neutral
  29. } color_t;
  30. /* OR */
  31. typedef short color_t;        /* (0..2) */
  32. typedef enum
  33. {
  34.   no_piece, pawn, knight, bishop, rook, queen, king, bpawn
  35. } piece_t;
  36. /* OR */
  37. typedef short piece_t;        /* (0..7) */
  38. typedef enum
  39. {
  40.   a1, a2, a3, a4, a5, a6, a7, a8,
  41.   b1, b2, b3, b4, b5, b6, b7, b8,
  42.   c1, c2, c3, c4, c5, c6, c7, c8,
  43.   d1, d2, d3, d4, d5, d6, d7, d8,
  44.   e1, e2, e3, e4, e5, e6, e7, e8,
  45.   f1, f2, f3, f4, f5, f6, f7, f8,
  46.   g1, g2, g3, g4, g5, g6, g7, g8,
  47.   h1, h2, h3, h4, h5, h6, h7, h8
  48. } square_t;
  49. /* OR */
  50. typedef short square_t;        /* (0..63) */
  51.  
  52. typedef short piececnt_t;    /* (0..32) piece count */
  53. typedef short offset_t;        /* (-63..63) distances on the board */
  54. typedef short score_t;        /* (-32768..32767) position scores */
  55. typedef short boolean_t;
  56.  
  57. 20.write more documentation
  58.  
  59. 21.Fix this bug report
  60. Article 95 in gnu.chess:
  61. From: campbell@rnd.GBA.NYU.EDU (Bruce Dietrich-Campbell)
  62. Subject: A Couple of Minor Bugs
  63. Summary: mate ignored, removing en passant
  64. Message-ID: <2004@rnd.GBA.NYU.EDU>
  65. Date: 21 Feb 90 19:41:40 GMT
  66. Reply-To: campbell@rnd.UUCP (Bruce Dietrich-Campbell)
  67. Organization: NYU Stern School of Business
  68. Lines: 43
  69.  
  70. Good fighting spirit!!  Gnuchess fights on even when mated !-)
  71.  
  72.                     -------------------------------
  73. Try the following 8|   |   |*R |   |   |   |*K |   |   Board Layout
  74. moves:             |-------------------------------|
  75.                   7|   |   |   |   |   | R |   | R |   white    black
  76. white   black      |-------------------------------|
  77.                   6|   |   |   |   |   |   |   |   |   kg2      kg8
  78. f5e6    b8e8       |-------------------------------|   rh7      rb8
  79. f7g7    g8f8      5|   |   |   |   |   | B |   |   |   rf7
  80. g7g8    f8f7(??)   |-------------------------------|   bf5
  81.                   4|   |   |   |   |   |   |   |   |
  82. That's the way     |-------------------------------|
  83. to fight!!        3|   |   |   |   |   |   |   |   |
  84.                    |-------------------------------|
  85.                   2|   |   |   |   |   |   | K |   |
  86.                    |-------------------------------|
  87.                   1|   |   |   |   |   |   |   |   |
  88.                     -------------------------------
  89.                      a   b   c   d   e   f   g   h
  90.  
  91.  
  92.                     -------------------------------
  93. Try the following 8|   |   |   |   |   |   |   |   |   Board Layout:
  94. moves:             |-------------------------------|
  95.                   7|   |   |   |   |   |   |   |   |   white    black
  96. white   black      |-------------------------------|
  97.                   6|   |   |   |   |   |   |   |   |   ke2      kb2
  98. c2c4    d4c3       |-------------------------------|   pc2      pd4
  99.                   5|   |   |   |   |   |   |   |   |
  100. ie. black takes    |-------------------------------|
  101. en passant        4|   |   |   |*P |   |   |   |   |
  102.                    |-------------------------------|
  103. Now try the       3|   |   |   |   |   |   |   |   |
  104. remove command.    |-------------------------------|
  105. The white pawn    2|   |*K | P |   | K |   |   |   |
  106. doesn't reappear.  |-------------------------------|
  107.                   1|   |   |   |   |   |   |   |   |
  108.                     -------------------------------
  109.                      a   b   c   d   e   f   g   h
  110. .............................................................................
  111. Bruce Dietrich-Campbell  ARPA:   campbell@rnd.gba.nyu.edu
  112.                          USENET: ...!{uunet,rocky,harvard}!cmcl2!rnd!campbell
  113.  
  114. Try moving a rook to row and and the undo (it becomes a pawn!!!)
  115. And also fix undo of promotions when using edit to setup a position.
  116.  
  117. 22. Regression testing of strength against a bank
  118.   of positions. The regression should compare
  119.   performance between two releases, assess
  120.   solution times, speed in nodes per second,
  121.   accuracy of evaluation, and depth and then
  122.   produce a comparison table, along with a final
  123.   assessment of which version is superior.
  124.  
  125. 23. Complete rework of the book, eliminating all
  126.   illegal moves, providing a score for each variation and then use
  127.   dither to choose a random move. Support code to enter variations
  128.   based on the score.
  129.  
  130. 24. An analyse mode, feed gnuchess with a game. gnuchess will
  131.   analyse each posistion in that game giving it`s own principle
  132.   variation and score and a principle variation and score for the
  133.   played move, if they are not the same.
  134.  
  135. 25. New code structure:
  136.  
  137. gnuchess.h:    As is!
  138. gnuchess.c:    (just the main program)        from gnuchess.c
  139. eval.c:        (evaluation routines)        from gnuchess.c
  140. move.c:        (move generation)        from gnuchess.c
  141. tran.c:        (transposition table)        from gnuchess.c
  142. book.c:        (opening book)            from *dsp.c and gnuchess.c
  143. search.c:    (move tree search)        from gnuchess.c
  144. dsp.c:        (common display routies)    from *dsp.c
  145. nondsp.c:    (the non common nondsp routines)from nondsp.c
  146. uxdsp.c:    (the non common uxdsp routines) from uxdsp.c
  147. nuxdsp.c:    (the non common nuxdsp routines)from nuxdsp.c
  148.  
  149. 26. Better forced mate recogition by adding all check moves to the quiescent
  150.     analyse (this probably means that the KingScan heuristics can be removed)
  151.  
  152. 27. an empty command line should display the board, to be compatibe with
  153.     unix chess in CHESSTOOL mode.
  154.  
  155. 28. The CHESSTOOL mode should not be a compile time option but rather an
  156.     option depending on a flag (-c) or if gnuchessr is named chess.
  157.  
  158.  
  159.  
  160.